@@ -73,14 +73,10 @@ module Agents |
||
| 73 | 73 |
def handle_payload(payload) |
| 74 | 74 |
location = Location.new(payload) |
| 75 | 75 |
|
| 76 |
- if interpolated[:accuracy_field].present? |
|
| 77 |
- accuracy_field = interpolated[:accuracy_field] |
|
| 78 |
- else |
|
| 79 |
- accuracy_field = 'accuracy' |
|
| 80 |
- end |
|
| 76 |
+ accuracy_field = interpolated[:accuracy_field].presence || 'accuracy' |
|
| 81 | 77 |
|
| 82 | 78 |
if location.present? && (!interpolated[:max_accuracy].present? || !payload[accuracy_field] || payload[accuracy_field].to_i < interpolated[:max_accuracy].to_i) |
| 83 |
- if !payload[accuracy_field] |
|
| 79 |
+ if interpolated[:max_accuracy].present? && !payload[accuracy_field].present? |
|
| 84 | 80 |
log "Accuracy field missing; all locations will be kept" |
| 85 | 81 |
end |
| 86 | 82 |
create_event payload: payload, location: location |
@@ -74,4 +74,20 @@ describe Agents::UserLocationAgent do |
||
| 74 | 74 |
expect(@agent.events.last.lat).to eq(45) |
| 75 | 75 |
expect(@agent.events.last.lng).to eq(123) |
| 76 | 76 |
end |
| 77 |
+ |
|
| 78 |
+ it 'allows a custom accuracy field' do |
|
| 79 |
+ event = Event.new |
|
| 80 |
+ event.agent = agents(:bob_weather_agent) |
|
| 81 |
+ event.created_at = Time.now |
|
| 82 |
+ @agent.options['accuracy_field'] = 'estimated_to' |
|
| 83 |
+ event.payload = { 'longitude' => 123, 'latitude' => 45, 'estimated_to' => '20', 'something' => 'else' }
|
|
| 84 |
+ |
|
| 85 |
+ expect {
|
|
| 86 |
+ @agent.receive([event]) |
|
| 87 |
+ }.to change { @agent.events.count }.by(1)
|
|
| 88 |
+ |
|
| 89 |
+ expect(@agent.events.last.payload).to eq({ 'longitude' => 123, 'latitude' => 45, 'estimated_to' => '20', 'something' => 'else' })
|
|
| 90 |
+ expect(@agent.events.last.lat).to eq(45) |
|
| 91 |
+ expect(@agent.events.last.lng).to eq(123) |
|
| 92 |
+ end |
|
| 77 | 93 |
end |